﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ODataConsumer.ServiceReference1;

namespace ODataConsumer
{
    class Program
    {
        static BookExchaneContext db;
        static int count = 0;

        static void Main(string[] args)
        {
            SqlConnection cnn = new SqlConnection("Data Source=rose.arvixe.com;Initial Catalog=aaaaTestOData;Persist Security Info=True;User ID=jbookex;Password=)ok(ij*u");
            cnn.Open();

            return;
            Init();

            while (true)
            {
                Console.Write("Input 1_get  2_Insert  3_Update  4_Delete : ");
                var input = Console.ReadLine();
                if (input == "exit")
                    return;

                int value = -1;
                int.TryParse(input, out value);


                switch (value)
                {
                    case 1:
                        Get();
                        break;
                    case 2:
                        Insert();
                        //InsertRequest();
                        break;
                    case 3:
                        Update();
                        break;
                    case 4:
                        DeleteData();
                        break;
                }

                Console.WriteLine("Finished");
                Console.ReadLine();
                Console.Clear();
            }
        }

        private static void Init()
        {
            db = new BookExchaneContext(new Uri("http://wsto.travianoverview.com/premium42/OData.svc/"));
            //db = new BookExchaneContext(new Uri("http://localhost:19433/OData.svc/"));
            db.Timeout = 30000;
            db.UsePostTunneling = true;
        }

        private static void DeleteData()
        {
            var cat = db.Categories.Where(c => c.CategoryCode > 0).FirstOrDefault();
            if (cat != null)
            {
                db.DeleteObject(cat);
                db.SaveChanges();
            }

        }


        private static void InsertRequest()
        {
            Request cat = new Request()
            { 
                ID = Guid.NewGuid(),
                Active = 1,
                BookName = "Hãy Yêu Thương Ba Bẹ",
                BookUrl = "http://static.hanhtrinhdelta.com/wp-content/uploads/2011/10/con-yeu-cha-me-nhieu-lam.jpg",
                CategoryCode = 1,
                Contact = "Lê Đăng Vũ, thủ đức",
                CreatingDate = DateTime.Now,
                Description = "Có lẽ nào điều anh thấy là thậtCó lẽ nào em hết yêu anh rồiKhi em cười nói khi em bên ai rất nhiều ngườiAnh hiểurằngem ước muốn thật nhiềuAnh hiểu rằng đối với em bây giờBao nhiêu là đủ, em vui là được có phải không?Hạnhphúc chẳng lớn lao để em phải khát khaoPhải khiến em nghĩ nhiều dù biết rồi anh sẽ mất emCuộc sống quá tấp nập vòng tay em đã quá chậtAnh hãy bước ra khỏi cuộc vui của em",
                ExchangePlace = "trường sư phạm kỹ thuật",
                Finished = 0,
                LastModified = DateTime.Now,
                MemberCode = 1,
                Price1 = 40000,
                Price2 = 20000,
                Quantity = 1,
                RequestCode = 1,
                RequestType = "R",
                Status = "F"

            };
            db.AddToRequests(cat);

            try
            {
                db.SaveChanges();                
            }
            catch (Exception ex)
            {
                var err = ex.ToString();
            }

        }

        private static void Insert()
        {
            Category cat = new Category()
            {
                ID = Guid.NewGuid(),
                Description = "Entrepreneur " + count,
                CategoryCode = count + 1
            };
            db.AddToCategories(cat);
            db.SaveChanges();
        }

        private static void Update()
        {
            BookExchaneContext db = new BookExchaneContext(new Uri("http://wsto.travianoverview.com/premium42/OData.svc/"));
            db.UsePostTunneling = true;
            var r = db.Requests.FirstOrDefault();
            //r.Description = "updated";

            db.UpdateObject(r);
            db.SaveChanges();

            //var cat = db.Requests.FirstOrDefault();
            //if (cat != null)
            //    cat.Description = "changed";

            //db.UpdateObject(cat);
            //db.SaveChanges();
        }

        private static void Get()
        {
            var cats = db.Categories.ToList();
            Console.WriteLine("there have {0} items", cats.Count);
            for (int i = 0; i < cats.Count; i++)
            {
                var category = cats[i];

                Console.WriteLine("{0} code:{1}      Desc:{2}", i, category.CategoryCode, category.Description);
            }
        }
    }
}
